//
//  FCSuitBoundTableView.h
//  webViewLocal
//
//  Created by 陈文斌 on 2021/7/28.
//

#import <UIKit/UIKit.h>
#import "UITableView+FCEmpTableViewSet.h"

#pragma mark - Masonry适配自适应高度tableview
#warning 在cell不是约束布局的情况下,推荐使用FCSuitTableView,因为tableview无法自适应高度
@class FCSuitBoundTableView;
@protocol FCSuitBoundTableViewDelegate <NSObject>
/**
 表格内容
 */
-(UITableViewCell*)gettableView:(FCSuitBoundTableView *)tableView andTableViewCell:(UITableViewCell*)cell cellForRowAtIndexPath:(NSIndexPath *)indexPath;
/**
 表格点击
 */
-(void)tableViewSelect:(FCSuitBoundTableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
@end
NS_ASSUME_NONNULL_BEGIN

@interface FCSuitBoundTableView : UITableView
///cell的赋值requestUse;
@property (nonatomic,strong) NSString *requestUseCell;
///cell的赋值model;
@property (nonatomic,strong) NSString *cellLevy;
///cell初始最小高度;
@property (nonatomic,assign) CGFloat cellHeight;

/// 数据内容默认情况下tableview行数取rows为true时contentModelArr取section
@property (nonatomic,assign) BOOL numberSection;
/// 数据内容默认情况下tableview行数取rows = contentModelArr.count
@property (nonatomic,strong) NSMutableArray *contentModelArr;
/**
tableView点击代理,也可以用上面的selectBlock 优先block,加入block,则delegate不执行
*/
@property(nonatomic,weak)id<FCSuitBoundTableViewDelegate> tableViewDelegate;
#pragma mark --以下为特殊处理的tableview样式
/// 头部修改 headview为空是赋值 sectin是头部 retun头部高度
@property(nonatomic,strong)CGFloat (^setTableViewHeadBlock)(FCSuitBoundTableView *tableView,NSInteger section,UIView *headView);
/// 底部修改 footview为空是赋值 sectin是头部 retun头部高度
@property(nonatomic,strong)CGFloat (^setTableViewFootBlock)(FCSuitBoundTableView *tableView,NSInteger section,UIView *footView);
/// 放弃原有默认方案,自行赋值row数量
@property(nonatomic,strong)NSInteger (^numberOfRowsInSectionBlock)(FCSuitBoundTableView *tableView,NSInteger section);
/// 放弃原有默认方案,自行赋值section数量
@property(nonatomic,strong)NSInteger (^numberOfSectionsBlock)(FCSuitBoundTableView *tableView);

/// 放弃原有默认方案,自行赋值Cell,优先于代理和默认cell
@property(nonatomic,strong)UITableViewCell* (^cellForRowAtIndexPathBlock)(FCSuitBoundTableView *tableView,NSIndexPath *index);
/// 点击回调 优先于代理
@property(nonatomic,strong)void (^tableViewDidSelect)(FCSuitBoundTableView *tableView,NSIndexPath *index);


@property(nonatomic,strong)void (^tableVieWillDisplay)(FCSuitBoundTableView *tableView,UITableViewCell*cell,NSIndexPath *index);

/// 编辑模式类别
@property(nonatomic,assign)UITableViewCellEditingStyle editStyle;

/// 编辑按钮
@property(nonatomic,strong)NSArray<UITableViewRowAction*>* (^setTableViewAction)(FCSuitBoundTableView *tableView,NSIndexPath *index);
@property(nonatomic,strong)UITableViewCellEditingStyle (^setEditStyleAction)(FCSuitBoundTableView *tableView,NSIndexPath *index);
/// 点击回调 优先于代理
@property(nonatomic,strong)void (^tableViewDidScroll)(FCSuitBoundTableView *tableView);
/// 跳转控制器
@property (strong, nonatomic) Class pushController;
///跳转控制器赋值
///字典key对应模型字段若模型多层级,key可以模型name以,隔开
///字典value对应pushController字段
@property (strong, nonatomic) NSDictionary * pushKeyValue;
//重新设置代理,在xib集成tableview用
@property (assign, nonatomic) BOOL addtargetDelegate;
@end

NS_ASSUME_NONNULL_END
